package be.vdab.servlets;

import java.io.IOException;
import java.util.*;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import be.vdab.dao.KlantenDAO;
import be.vdab.entities.Klanten;

/**
 * Servlet implementation class NieuweKlantServlet
 */
@WebServlet("/nieuweklant.htm")
public class NieuweKlantServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private static final String VIEW = "/WEB-INF/JSP/nieuweKlant.jsp";
	private static final String REDIRECT_VIEW ="/bevestiging.htm";
	Klanten klant = null;
	KlantenDAO klantenDAO = new KlantenDAO();
	HttpSession session = null;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		request.getRequestDispatcher(VIEW).forward(request, response);
	}

	@SuppressWarnings("unused")
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		List<String>fouten = new ArrayList<String>();
		List<String>gebruikersnamen= new ArrayList<String>();
		String voornaam = null, familienaam = null, straat = null, gemeente = null, gebruikersnaam = null, paswoord = null, herhaalPaswoord = null;
		Long huisnr = null, postcode = null;
		
		if(request.getParameter("Voornaam")==null){
			fouten.add("Je moet de voornaam invullen");
		}else{voornaam = request.getParameter("Voornaam");}
		
		if(request.getParameter("Familienaam")==null){
			fouten.add("Je moet de familienaam invullen");
		}else{familienaam = request.getParameter("Familienaam");}
		
		if(request.getParameter("Straat")==null){
			fouten.add("Je moet de straat invullen");
		}else{straat = request.getParameter("Straat");}
		
		if(request.getParameter("Huisnr")==null){
			fouten.add("Je moet het huisnummer invullen");
		}else{huisnr = Long.parseLong(request.getParameter("Huisnr"));}
		
		if(request.getParameter("Postcode")==null){
			fouten.add("Je moet de postcode invullen");
		}else{postcode = Long.parseLong(request.getParameter("Postcode"));}
		
		if(request.getParameter("Gemeente")==null){
			fouten.add("Je moet de gemeente invullen");
		}else{gemeente = request.getParameter("Gemeente");}
		
		if(request.getParameter("Gebruikersnaam")==null){
			fouten.add("Je moet de gebruikersnaam invullen");
		}else{gebruikersnaam = request.getParameter("Gebruikersnaam");}
		
		if(request.getParameter("Paswoord")==null){
			fouten.add("Je moet het paswoord invullen");
		}else{paswoord = request.getParameter("Paswoord");}
		
		herhaalPaswoord = request.getParameter("herhaalPaswoord");
		
		if(!paswoord.equals(herhaalPaswoord)){
			fouten.add("De paswoorden zijn niet gelijk aan elkaar");
		}
		
		gebruikersnamen = klantenDAO.getGebruikersnamen();
		for (String username : gebruikersnamen){
			if(gebruikersnaam.equals(username)){
				fouten.add("DEZE GEBRUIKERSNAAM IS AL IN GEBRUIK");
			}
		}
			
		if (fouten.isEmpty()){
			klant = new Klanten(voornaam, familienaam, straat, huisnr, postcode, gemeente, gebruikersnaam, paswoord);		
			klantenDAO.voegKlantToe(klant);
			session= request.getSession();
			session.setAttribute("klant", klant);
			response.sendRedirect(request.getContextPath() + REDIRECT_VIEW);
		}		
		else{
			request.setAttribute("fouten", fouten);
			request.getRequestDispatcher(VIEW).forward(request, response);		
		}		
	}

}
